#include<iostream>
#include<vector>
using namespace std;
int n,m;
vector<int> path;
//方法一：
// void dfs(int k)
// {
// 	if(k>n+1) return;
// 	if(path.size()==(size_t)m)
// 	{
// 		for(auto&e:path)
// 		{
// 			cout<<e<<" ";
// 		}
// 		cout<<endl;
// 		return ;
// 	}
// 	path.push_back(k);
// 	dfs(k+1);
// 	path.pop_back();
// 	dfs(k+1);
// }

//方法二：
void dfs(int k)
{
	if(path.size()==(size_t)m)
	{
		for(auto&e:path)
		{
			cout<<e<<" ";
		}
		cout<<endl;
		return ;
	}
	for(int i=k;i<=n;i++)
	{
		path.push_back(i);
		dfs(i+1);
		path.pop_back();
	}
}
int main()
{
	cin>>n>>m;
	dfs(1);
}